package org.example.L04_04_polymorphism;

//接口
class L04_MyMainClass3 {
    public static void main(String[] args) {
//        创建L04_pig2对象
        L04_pig3 myPig3=new L04_pig3();
//        创建L04_dog对象
        L04_dog2 myDog2=new L04_dog2();

//        引用的不同子类对象
//        L04_interface对象引用新创建L04_pig2对象
        L04_interface2 animal3 =new L04_pig3();
//        L04_interface对象引用新创建L04_pig2对象
        L04_interface2 animal4 =new L04_dog2();

//        new出来的实际对象类型是确定的，但是引用类型是不确定的
        makeAnimalSound(myDog2);
        makeAnimalSound(myPig3);
        makeAnimalSound(animal4);
        makeAnimalSound(animal3);

    }

    public static void makeAnimalSound(L04_interface2 interface2){
//        animalSound()同一个动作
        interface2.animalSound();
    }
}


/*
* "D:\A Ahomework\IDEA\jdk\corretto-17.0.12\bin\java.exe" "-javaagent:D:\JetBrains\IntelliJ IDEA 2023\IntelliJ IDEA 2022.3.1\lib\idea_rt.jar=54412:D:\JetBrains\IntelliJ IDEA 2023\IntelliJ IDEA 2022.3.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\A Ahomework\IDEA\javawork\hello_java\target\classes" org.example.L04_04_polymorphism.L04_MyMainClass3
    小狗说：汪汪汪!
    小猪说：oink-oink!
    小狗说：汪汪汪!
    小猪说：oink-oink!

    Process finished with exit code 0
* */
